/**
 * 文件操作的库
 */
import fs from 'fs-extra'

/*
*判断指定路径下的文件或目录是否存在 
如果判断的文件有后缀名，那参数需要加上后缀名，如：fs.pathExistsSync('base.js')
*/
const isExists=fs.pathExistsSync('base')
//console.log(isExists) // false

const isExists1=fs.pathExistsSync('base.js')
//console.log(isExists) // true

const isExists2=fs.pathExistsSync('test')
//console.log(isExists) // true

//读取当前目录下的文件及文件夹
const files=fs.readdirSync('test')
console.log(files)
//清空文件，但保留.git文件
//fs.removeSync('test',{ recursive: true, force: true })
function emptyDir(dir) {
  if (!fs.existsSync(dir)) {
    return
  }
  for (const file of fs.readdirSync(dir)) {
    if (file === '.git') {
      continue
    }
    fs.rmSync(path.resolve(dir, file), { recursive: true, force: true })
  }
}
//emptyDir('test')
//清空所有文件
//fs.emptyDirSync('test')
/**
 * path: 路径操作
 */
import path from 'path'
console.log(path.resolve())//获取的是当前目录的绝对路径 :E:\study\工程化\engineering\cli-test
console.log(path.basename(path.resolve()))

console.log('cwd----',process.cwd())//当前文件所在的文件夹的绝对路径

import {fileURLToPath} from 'url'
console.log('userAgent---',process.env.npm_config_user_agent)
console.log('metaUrl----',import.meta.url) //获取的是当前执行文件的决定路径,中文会被转义

console.log('fileURLToPath----',fileURLToPath(import.meta.url))
console.log('最终路径----', path.resolve(fileURLToPath(import.meta.url), '../', 'template-vue'))

const templateDir=path.resolve(fileURLToPath(import.meta.url), '../', 'template-vue')

function write(file, content) {
    const target=path.resolve(root,file)
    if (content) { //如果存在写入的内容，说明对应文件已存在，直接将内容写入目标文件
        fs.writeFileSync(target,content)
    } else { // 在目标目录创建对应的文件
        fs.copy(path.relative(templateDir,file),target)
    }
}


function copy(src, dest) {
    const stat = fs.statSync(src)
    console.log('stat---',stat)
  if (stat.isDirectory()) {
    copyDir(src, dest)
  } else {
    fs.copyFileSync(src, dest)
  }
}

function copyDir(srcDir, destDir) {
  fs.mkdirSync(destDir, { recursive: true })
  for (const file of fs.readdirSync(srcDir)) {
    const srcFile = path.resolve(srcDir, file)
    const destFile = path.resolve(destDir, file)
    copy(srcFile, destFile)
  }
}